package cn.jji8.patternLogin.spigot.data;

import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;

import java.io.*;
import java.net.InetAddress;
import java.util.List;

public class Data {
    static File offlineLocationFile=null;
    //插件主类
    @SuppressWarnings("unused")
    static Plugin plugin;
    //数据管理器
    static DataMinger dataMinger;
    /**
     * 加载插件时加载数据管理类
     * */
    public static void load(Plugin plugin){
        Data.offlineLocationFile = new File(plugin.getDataFolder(),"data/offlineLocation");
        Data.plugin = plugin;
        Plugin KnapsackToGo = plugin.getServer().getPluginManager().getPlugin("KnapsackToGo");
        if(KnapsackToGo!=null){
            plugin.getLogger().warning("————————————————————————————————");
            plugin.getLogger().warning("请注意，这条消息非常重要！");
            plugin.getLogger().warning("请注意，这条消息非常重要！");
            plugin.getLogger().warning("请注意，这条消息非常重要！");
            plugin.getLogger().warning("————————————————————————————————");
            plugin.getLogger().warning("检测到你安装了KnapsackToGo3数据同步插件，已经");
            plugin.getLogger().warning("为你开启了BC群组服模式.");
            plugin.getLogger().warning("————————————————————————————————");
            plugin.getLogger().severe("请一定要将本插件和KnapsackToGo3都安装到BC群组上，");
            plugin.getLogger().severe("并且为KnapsackToGo3配置好数据库，或文件路径，");
            plugin.getLogger().warning("————————————————————————————————");
            try {
                //noinspection SpellCheckingInspection
                Data.class.getClassLoader().loadClass("cn.jja8.knapsackToGo3.spigot.KnapsackToGo3Spigot");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                plugin.getLogger().severe("KnapsackToGo版本过低，无法依赖！");
            }
            dataMinger = new KnapsackToGo3Data();
        }else {
            dataMinger = new localData();
        }
    }
    /**
     * 获取玩家是否需要登入
     * */
    public static boolean getPlayerNeedLogin(String playerName){
        return dataMinger.getPlayerNeedLogin(playerName);
    }
    /**
     * 设置玩家已经登录
     * */
    public static void setPlayerAlreadyLogin(String playerName){
        dataMinger.setPlayerAlreadyLogin(playerName);
    }
    /**
     * 设置某玩家的密码数据
     * */
    public static void setPassword(String playerName, String password){
        dataMinger.setPassword(playerName,password);
    }
    /**
     * 获取某玩家的密码数据
     * */
    public static String getPassword(String playerName){
        return dataMinger.getPassword(playerName);
    }
    /**
     * 设置玩家下线时位置
     * */
    public static void setLocation(String playerName,Location location){
        dataMinger.setLocation(playerName,location);
    }
    /**
     * 获取玩家下线时位置
     * */
    public static Location getLocation(String playerName){
        return dataMinger.getLocation(playerName);
    }
    //---------------------------------------------------------------------
    /**
     * 获取某ip下的全部玩家
     * */
    public static List<String> getAllIpPlayer(InetAddress ip){
        return dataMinger.getAllIpPlayer(ip);
    }
    /**
     * 设置玩家在某个ip下
     * */
    public static void setPlayerIp(String playerName, InetAddress ip){
        dataMinger.setPlayerIp(playerName,ip);
    }
}
